import { useUserStore } from "@/store/userStore";
import router from "@/router";

// 这个封装是一个处理后端返回的权限数据的 ， 调用后需要自己再进行额外处理
export function TransRouteStructy(data: Menu[]) {
  let menus: Menu[] = JSON.parse(JSON.stringify(data));
  // 找到一级
  let levelOne: UserMenu[] = menus.filter((item) => item.parentId === 0);
  // 找二级
  menus.forEach((c) => {
    levelOne.forEach((p) => {
      if (c.parentId === p.id) {
        if (!p.children) {
          p.children = [];
        }
        p.children.push(c);
      }
    });
  });
  return levelOne;
}

// 这个封装是一个带函数参数的处理后端返回的权限数据的
export function TransRouteStructyWidthCondiction(
  data: Menu[],
  condition?: (param: Menu) => boolean
) {
  let menus: Menu[] = JSON.parse(JSON.stringify(data));
  // 找到一级
  let levelOne: UserMenu[] = menus.filter((item) => item.parentId === 0);
  // 找二级
  menus.forEach((c) => {
    levelOne.forEach((p) => {
      if (c.parentId === p.id && (condition ? condition(c) : true)) {
        if (!p.children) {
          p.children = [];
        }
        p.children.push(c);
      }
    });
  });
  return levelOne;
}

// 格式化时间的函数
export const formatDate = (date: string) => {
  if (!date) return "";
  const d = new Date(date);
  // const year = d.getFullYear();
  // const month = (d.getMonth() + 1 + "").padStart(2, "0");
  // const day = (d.getDate() + "").padStart(2, "0");
  // const hour = (d.getHours() + "").padStart(2, "0");
  // const minute = (d.getMinutes() + "").padStart(2, "0");
  // const second = (d.getSeconds() + "").padStart(2, "0");
  // return `${year}-${month}-${day} ${hour}:${minute}:${second}`;

  d.setHours(d.getHours() + 8);
  let time = d.toJSON().substring(0, 19).replace("T", " ");
  return time;
};

export function logout() {
  const userStore = useUserStore();
  // 退出登录
  // 清除token
  localStorage.removeItem("token");
  // 清除路由数据
  userStore.parentMenus.forEach((item) => {
    router.removeRoute(item.name);
  });
  // 清除pinia中的数据
  userStore.clear();
  // 跳转到登录页
  router.push("/login");
}
